package com.jctrip.hotel.source.model.elong.resp.online;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.jctrip.hotel.source.model.elong.resp.offline.ElongQueryHotelRpResp;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @Author: zxy
 * @CreateTime: 2023-11-14 14:16
 * @Description:
 */
@Data
public class ElongHotelDetailResp implements Serializable {
    @JsonProperty("Count")
    @ApiModelProperty("查询到的酒店总数")
    private Integer count;

    @JsonProperty("Hotels")
    @ApiModelProperty("酒店结果集")
    private List<Hotel> hotels;

    @JsonProperty("ExchangeRateList")
    @ApiModelProperty("汇率信息")
    private List<ExchangeRate> exchangeRateList;

    @Data
    public static class Hotel implements Serializable {
        @JsonProperty("HotelId")
        @ApiModelProperty("酒店编号")
        private String hotelId;

        @JsonProperty("LowRate")
        @ApiModelProperty("最低价格")
        private BigDecimal lowRate;

        @JsonProperty("CurrencyCode")
        @ApiModelProperty("最低价格的货币")
        private String currencyCode;

        @JsonProperty("BookingRules")
        @ApiModelProperty("预订规则")
        private List<BookingRule> bookingRules;

        @JsonProperty("GuaranteeRules")
        @ApiModelProperty("担保规则")
        private List<GuaranteeRule> guaranteeRules;

        @JsonProperty("PrepayRules")
        @ApiModelProperty("预付规则")
        private List<PrepayRule> prepayRules;

        @JsonProperty("GuaranteeRuleExtends")
        @ApiModelProperty("新担保规则")
        private List<GuaranteeRuleExtend> guaranteeRuleExtends;

        @JsonProperty("PrepayRuleExtends")
        @ApiModelProperty("新预付规则")
        private List<PrepayRuleExtend> prepayRuleExtends;

        @JsonProperty("ValueAdds")
        @ApiModelProperty("增值服务")
        private List<ElongQueryHotelRpResp.ValueAdd> valueAdds;

        @JsonProperty("DrrRules")
        @ApiModelProperty("促销规则")
        private List<DrrRule> drrRules;

        @JsonProperty("Facilities")
        @ApiModelProperty("酒店设施")
        private List<String> facilities;

        @JsonProperty("Rooms")
        @ApiModelProperty("房型列表")
        private List<Room> rooms;

        @JsonProperty("Detail")
        @ApiModelProperty("酒店信息")
        private Detail detail;

        @JsonProperty("Images")
        @ApiModelProperty("酒店图片")
        private List<Image> images;

        @JsonProperty("Gifts")
        @ApiModelProperty("送礼活动")
        private List<Gift> gifts;

        @JsonProperty("GiftPackages")
        @ApiModelProperty("礼包套餐")
        private List<GiftPackage> giftPackages;

        @JsonProperty("HAvailPolicys")
        @ApiModelProperty("酒店特殊信息提示")
        private List<HAvailPolicy> hAvailPolicys;
    }

    @Data
    public static class BookingRule implements Serializable {

        @JsonProperty("TypeCode")
        @ApiModelProperty("规则类型")
        private String typeCode;

        @JsonProperty("PerRoomPerName")
        @ApiModelProperty("您预订了N间房，请您提供不少于N的入住客人姓名")
        private Boolean perRoomPerName;

        @JsonProperty("ForeignerNeedEnName")
        @ApiModelProperty("此酒店要求外宾务必留英文拼写")
        private Boolean foreignerNeedEnName;

        @JsonProperty("RejectCheckinTime")
        @ApiModelProperty("几点到几点酒店不接受预订，此处校验的是下单时的预订时间")
        private String rejectCheckinTime;

        @JsonProperty("NeedPhoneNo")
        @ApiModelProperty("务必提供客人手机号(请加在联系人节点Contact上)")
        private Boolean needPhoneNo;

        @JsonProperty("BookingRuleId")
        @ApiModelProperty("预订规则编号")
        private Long bookingRuleId;

        @JsonProperty("Description")
        @ApiModelProperty("描述")
        private String description;

        @JsonProperty("DateType")
        @ApiModelProperty("日期类型")
        private String dateType;

        @JsonProperty("StartDate")
        @ApiModelProperty("开始日期")
        private Date startDate;

        @JsonProperty("EndDate")
        @ApiModelProperty("结束日期")
        private Date endDate;

        @JsonProperty("StartHour")
        @ApiModelProperty("每天开始时间")
        @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+8")
        private Date startHour;

        @JsonProperty("EndHour")
        @ApiModelProperty("每天开始时间")
        @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+8")
        private Date endHour;
    }

    @Data
    public static class GuaranteeRule implements Serializable {

        @JsonProperty("GuranteeRuleId")
        @ApiModelProperty("担保规则编号")
        private Long guranteeRuleId;

        @JsonProperty("Description")
        @ApiModelProperty("描述")
        private String description;

        @JsonProperty("DateType")
        @ApiModelProperty("日期类型")
        private String dateType;

        @JsonProperty("StartDate")
        @ApiModelProperty("开始日期")
        private Date startDate;

        @JsonProperty("EndDate")
        @ApiModelProperty("结束日期")
        private Date endDate;

        @JsonProperty("WeekSet")
        @ApiModelProperty("周有效天数")
        private String weekSet;

        @JsonProperty("IsTimeGuarantee")
        @ApiModelProperty("是否到店时间担保")
        private Boolean isTimeGuarantee;

        @JsonProperty("StartTime")
        @ApiModelProperty("到店担保开始时间")
        private Date startTime;

        @JsonProperty("EndTime")
        @ApiModelProperty("到店担保结束时间")
        private Date endTime;

        @JsonProperty("IsTomorrow")
        @ApiModelProperty("到店担保的结束时间是否为第二天")
        private Boolean isTomorrow;

        @JsonProperty("IsAmountGuarantee")
        @ApiModelProperty("是否房量担保")
        private Boolean isAmountGuarantee;

        @JsonProperty("Amount")
        @ApiModelProperty("担保的房间数,预定几间房及以上要担保")
        private Integer amount;

        @JsonProperty("GuaranteeType")
        @ApiModelProperty("担保类型")
        private String guaranteeType;

        @JsonProperty("ChangeRule")
        @ApiModelProperty("变更规则")
        private Enum changeRule;

        @JsonProperty("Day")
        @ApiModelProperty("日期参数")
        private Date day;

        @JsonProperty("Time")
        @ApiModelProperty("时间参数")
        private Date time;

        @JsonProperty("Hour")
        @ApiModelProperty("小时参数")
        private Integer hour;
    }

    @Data
    public static class PrepayRule implements Serializable {

        @JsonProperty("PrepayRuleId")
        @ApiModelProperty("规则编号")
        private Long prepayRuleId;

        @JsonProperty("Description")
        @ApiModelProperty("描述")
        private String description;

        @JsonProperty("DateType")
        @ApiModelProperty("日期类型")
        private String dateType;

        @JsonProperty("StartDate")
        @ApiModelProperty("开始日期")
        private Date startDate;

        @JsonProperty("EndDate")
        @ApiModelProperty("结束日期")
        private Date endDate;

        @JsonProperty("WeekSet")
        @ApiModelProperty("周有效设置")
        private String weekSet;

        @JsonProperty("ChangeRule")
        @ApiModelProperty("变更规则")
        private String changeRule;

        @JsonProperty("Hour")
        @ApiModelProperty("第一阶段提前的几小时")
        private Integer hour;

        @JsonProperty("Hour2")
        @ApiModelProperty("第二阶段提前的几小时")
        private Integer hour2;

        @JsonProperty("DateNum")
        @ApiModelProperty("具体取消时间日期部分")
        private Date dateNum;

        @JsonProperty("Time")
        @ApiModelProperty("具体取消时间小时部分")
        @JsonFormat(pattern = "HH:mm", timezone = "GMT+8")
        private Date time;

        @JsonProperty("DeductFeesBefore")
        @ApiModelProperty("在变更时间点前是否扣费")
        private Integer deductFeesBefore;

        @JsonProperty("DeductNumBefore")
        @ApiModelProperty("时间点前扣费的金额或比例")
        private BigDecimal deductNumBefore;

        @JsonProperty("CashScaleFirstBefore")
        @ApiModelProperty("时间点前扣款类型")
        private String cashScaleFirstBefore;

        @JsonProperty("DeductFeesAfter")
        @ApiModelProperty("在变更时间点后是否扣费")
        private Integer deductFeesAfter;

        @JsonProperty("DeductNumAfter")
        @ApiModelProperty("时间点后扣费的金额或比例")
        private BigDecimal deductNumAfter;

        @JsonProperty("CashScaleFirstAfter")
        @ApiModelProperty("时间点后扣款类型")
        private String cashScaleFirstAfter;
    }

    @Data
    public static class GuaranteeRuleExtend implements Serializable {

        @JsonProperty("GuaranteeRuleExtendId")
        @ApiModelProperty("规则ID")
        private Integer guaranteeRuleExtendId;

        @JsonProperty("StartDate")
        @ApiModelProperty("开始时间")
        private Date startDate;

        @JsonProperty("EndDate")
        @ApiModelProperty("结束时间")
        private Date endDate;

        @JsonProperty("WeekSet")
        @ApiModelProperty("周有效设置")
        private String weekSet;

        @JsonProperty("GuaranteeType")
        @ApiModelProperty("担保类型")
        private Integer guaranteeType;

        @JsonProperty("NoshowPenalty")
        @ApiModelProperty("取消费用类型")
        private Integer noshowPenalty;

        @JsonProperty("GrtLatestCheckTime")
        @ApiModelProperty("超时担保时间")
        private Integer grtLatestCheckTime;

        @JsonProperty("PenaltyRuleList")
        @ApiModelProperty("取消规则列表")
        private List<PenaltyWindowType> penaltyRuleList;
    }

    @Data
    public static class PrepayRuleExtend implements Serializable {

        @JsonProperty("PrepayRuleExtendId")
        @ApiModelProperty("规则ID")
        private Integer prepayRuleExtendId;

        @JsonProperty("StartDate")
        @ApiModelProperty("开始时间")
        private Date startDate;

        @JsonProperty("EndDate")
        @ApiModelProperty("结束时间")
        private Date endDate;

        @JsonProperty("WeekSet")
        @ApiModelProperty("周有效设置")
        private String weekSet;

        @JsonProperty("NoshowPenalty")
        @ApiModelProperty("取消费用类型")
        private Integer noshowPenalty;

        @JsonProperty("PenaltyRuleList")
        @ApiModelProperty("取消规则列表")
        private List<PenaltyWindowType> penaltyRuleList;
    }

    @Data
    public static class PenaltyWindowType implements Serializable {

        @JsonProperty("PenaltyType")
        @ApiModelProperty("扣款类型")
        private Integer penaltyType;

        @JsonProperty("PenaltyValue")
        @ApiModelProperty("罚金")
        private BigDecimal penaltyValue;

        @JsonProperty("Deadline")
        @ApiModelProperty("规则时间分割起始点")
        private String deadline;
    }

    @Data
    public static class ValueAddItem implements Serializable {

        @JsonProperty("ValueAddId")
        @ApiModelProperty("增值服务编号")
        private String valueAddId;

        @JsonProperty("TypeCode")
        @ApiModelProperty("业务代码")
        private String typeCode;

        @JsonProperty("Description")
        @ApiModelProperty("描述")
        private String description;

        @JsonProperty("IsInclude")
        @ApiModelProperty("是否包含在房费中")
        private Boolean isInclude;

        @JsonProperty("Amount")
        @ApiModelProperty("包含的份数")
        private Integer amount;

        @JsonProperty("CurrencyCode")
        @ApiModelProperty("货币代码")
        private String currencyCode;

        @JsonProperty("PriceOption")
        @ApiModelProperty("单价默认选项")
        private String priceOption;

        @JsonProperty("Price")
        @ApiModelProperty("单价")
        private BigDecimal price;

        @JsonProperty("IsExtAdd")
        @ApiModelProperty("是否单加")
        private Boolean isExtAdd;

        @JsonProperty("ExtOption")
        @ApiModelProperty("单加单价默认选项")
        private String extOption;

        @JsonProperty("ExtPrice")
        @ApiModelProperty("单加单价")
        private BigDecimal extPrice;

        @JsonProperty("StartDate")
        @ApiModelProperty("开始日期")
        private Date startDate;

        @JsonProperty("EndDate")
        @ApiModelProperty("结束日期")
        private Date endDate;

        @JsonProperty("WeekSet")
        @ApiModelProperty("周有效设置")
        private String weekSet;
    }

    @Data
    public static class DrrRule implements Serializable {

        @JsonProperty("DrrRuleId")
        @ApiModelProperty("促销规则编号")
        private Integer drrRuleId;

        @JsonProperty("TypeCode")
        @ApiModelProperty("产品促销规则类型代码")
        private String typeCode;

        @JsonProperty("Description")
        @ApiModelProperty("描述")
        private String description;

        @JsonProperty("DateType")
        @ApiModelProperty("日期类型")
        private String dateType;

        @JsonProperty("StartDate")
        @ApiModelProperty("促销生效开始日期")
        private Date startDate;

        @JsonProperty("EndDate")
        @ApiModelProperty("促销生效结束日期")
        private Date endDate;

        @JsonProperty("DayNum")
        @ApiModelProperty("提前几天")
        private Integer dayNum;

        @JsonProperty("CheckInNum")
        @ApiModelProperty("连住几天")
        private Integer checkInNum;

        @JsonProperty("EveryCheckInNum")
        @ApiModelProperty("每连住几晚")
        private Integer everyCheckInNum;

        @JsonProperty("LastDayNum")
        @ApiModelProperty("最后几天")
        private Integer lastDayNum;

        @JsonProperty("WhichDayNum")
        @ApiModelProperty("第几晚及以后优惠")
        private Integer whichDayNum;

        @JsonProperty("CashScale")
        @ApiModelProperty("按金额或按比例来优惠")
        private String cashScale;

        @JsonProperty("DeductNum")
        @ApiModelProperty("按金额或比例优惠的数值")
        private BigDecimal deductNum;

        @JsonProperty("WeekSet")
        @ApiModelProperty("星期有效设置")
        private String weekSet;

        @JsonProperty("FeeType")
        @ApiModelProperty("价格类型")
        private String feeType;
    }

    @Data
    public static class Room implements Serializable {

        @JsonProperty("RoomId")
        @ApiModelProperty("展示房型编号")
        private String roomId;

        @JsonProperty("NameEn")
        @ApiModelProperty("房间英文名")
        private String nameEn;

        @JsonProperty("Name")
        @ApiModelProperty("房型名称")
        private String name;

        @JsonProperty("RatePlans")
        @ApiModelProperty("产品信息")
        private List<RatePlan> ratePlans;

        @JsonProperty("ImageUrl")
        @ApiModelProperty("图片地址")
        private String imageUrl;

        @JsonProperty("Floor")
        @ApiModelProperty("楼层")
        private String floor;

        @JsonProperty("Broadnet")
        @ApiModelProperty("上网情况")
        private String broadnet;

        @JsonProperty("BedType")
        @ApiModelProperty("床型")
        private String bedType;

        @JsonProperty("BedDesc")
        @ApiModelProperty("床型描述")
        private String bedDesc;

        @JsonProperty("Description")
        @ApiModelProperty("房间描述")
        private String description;

        @JsonProperty("Comments")
        @ApiModelProperty("房间备注")
        private String comments;

        @JsonProperty("Area")
        @ApiModelProperty("面积")
        private String area;

        @JsonProperty("Capcity")
        @ApiModelProperty("可容纳人数")
        private String capacity;

        @JsonProperty("WindowTypeId")
        @ApiModelProperty("窗户类型ID")
        private Integer windowTypeId;

        @JsonProperty("WindosType")
        @ApiModelProperty("窗户类型描述")
        private String windowType;
    }

    @Data
    public static class RatePlan implements Serializable {

        @ApiModelProperty("产品编号")
        @JsonProperty("RatePlanId")
        private Long ratePlanId;

        @ApiModelProperty("产品名称")
        @JsonProperty("RatePlanName")
        private String ratePlanName;

        @ApiModelProperty("销售状态")
        @JsonProperty("Status")
        private Boolean status;

        @ApiModelProperty("销售房型编号")
        @JsonProperty("RoomTypeId")
        private String roomTypeId;

        @ApiModelProperty("供应商房型附加名称")
        @JsonProperty("SuffixName")
        private String suffixName;

        @ApiModelProperty("供应商酒店编码")
        @JsonProperty("HotelCode")
        private String hotelCode;

        @ApiModelProperty("是否支持专票")
        @JsonProperty("SupportSpecialInvoice")
        private Boolean supportSpecialInvoice;

        @ApiModelProperty("客人类型")
        @JsonProperty("CustomerType")
        private String customerType;

        @ApiModelProperty("适用人群")
        @JsonProperty("guestType")
        private String guestType;

        @ApiModelProperty("适用人群中其他的内容")
        @JsonProperty("guestTypeExtendCh")
        private String guestTypeExtendCh;

        @ApiModelProperty("房量限额")
        @JsonProperty("CurrentAlloment")
        private Integer currentAlloment;

        @ApiModelProperty("是否支持即时确认")
        @JsonProperty("InstantConfirmation")
        private Boolean instantConfirmation;

        @ApiModelProperty("付款类型")
        @JsonProperty("PaymentType")
        private String paymentType;

        @ApiModelProperty("对应的预订规则编号")
        @JsonProperty("BookingRuleIds")
        private String bookingRuleIds;

        @ApiModelProperty("是否为限价产品")
        @JsonProperty("isPriceLimittedProduct")
        private Boolean isPriceLimittedProduct;

        @JsonProperty("PriceLimitedType")
        @ApiModelProperty("限价类型")
        private Integer priceLimitedType;

        @JsonProperty("GuaranteeRuleIds")
        @ApiModelProperty("对应的担保规则编号")
        private String guaranteeRuleIds;

        @JsonProperty("PrepayRuleIds")
        @ApiModelProperty("对应的预付规则编号")
        private String prepayRuleIds;

        @JsonProperty("GuaranteeRuleExtendIds")
        @ApiModelProperty("对应的新担保规则ID")
        private String guaranteeRuleExtendIds;

        @JsonProperty("PrepayRuleExtendIds")
        @ApiModelProperty("对应的新预付规则编号")
        private String prepayRuleExtendIds;

        @JsonProperty("DrrRuleIds")
        @ApiModelProperty("对应的促销规则编号")
        private String drrRuleIds;

        @JsonProperty("ValueAddIds")
        @ApiModelProperty("对应的增值服务编号")
        private String valueAddIds;

        @JsonProperty("GiftIds")
        @ApiModelProperty("礼品ID")
        private String giftIds;

        @JsonProperty("PkgProductIds")
        @ApiModelProperty("礼包套餐ID")
        private String pkgProductIds;

        @JsonProperty("meals")
        @ApiModelProperty("新餐食节点")
        private Meals meals;

        @JsonProperty("HAvailPolicyIds")
        @ApiModelProperty("酒店特殊信息提示的编号")
        private String hAvailPolicyIds;

        @JsonProperty("ProductTypes")
        @ApiModelProperty("产品特性类型")
        private String productTypes;

        @JsonProperty("sellChannels")
        @ApiModelProperty("分销渠道")
        private String sellChannels;

        @JsonProperty("IsLastMinuteSale")
        @ApiModelProperty("是否今日特价（即尾房）")
        private Boolean isLastMinuteSale;

        @JsonProperty("NeedIdNo")
        @ApiModelProperty("是否需要提供身份证号")
        private Boolean needIdNo;

        @JsonProperty("Identification")
        @ApiModelProperty("身份信息验证类型")
        private Integer identification;

        @JsonProperty("StartTime")
        @ApiModelProperty("尾房开始时间")
        @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+8")
        private String startTime;

        @JsonProperty("EndTime")
        @ApiModelProperty("尾房结束时间")
        @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+8")
        private String endTime;

        @JsonProperty("MinAmount")
        @ApiModelProperty("预定最少数量")
        private Integer minAmount;

        @JsonProperty("MinDays")
        @ApiModelProperty("最少入住天数")
        private Integer minDays;

        @JsonProperty("MaxDays")
        @ApiModelProperty("最多入住天数")
        private Integer maxDays;

        @JsonProperty("MaxCheckinRooms")
        @ApiModelProperty("最多预订间数")
        private Integer maxCheckinRooms;

        @JsonProperty("MinAdvHours")
        @ApiModelProperty("最少提前预订小时数")
        private Integer minAdvHours;

        @JsonProperty("MaxAdvHours")
        @ApiModelProperty("最多提前预订小时数")
        private Integer maxAdvHours;

        @JsonProperty("TotalRate")
        @ApiModelProperty("总价")
        private BigDecimal totalRate;

        @JsonProperty("AverageRate")
        @ApiModelProperty("日均价")
        private BigDecimal averageRate;

        @JsonProperty("AverageBaseRate")
        @ApiModelProperty("促销前的日均价")
        private BigDecimal averageBaseRate;

        @JsonProperty("CurrencyCode")
        @ApiModelProperty("货币")
        private String currencyCode;

        @JsonProperty("Coupon")
        @ApiModelProperty("同程促销金额")
        private BigDecimal coupon;

        @JsonProperty("NightlyRates")
        @ApiModelProperty("每天价格数组")
        private List<NightlyRate> nightlyRates;

        @JsonProperty("InvoiceMode")
        @ApiModelProperty("预付产品发票模式")
        private String invoiceMode;

        @JsonProperty("CooperationType")
        @ApiModelProperty("酒店签约类型")
        private Integer cooperationType;

        @JsonProperty("BookingChannels")
        @ApiModelProperty("产品可以展示销售的渠道")
        private String bookingChannels;

        @JsonProperty("earliestToliveTime")
        @ApiModelProperty("可住开始时间")
        private String earliestToliveTime;

        @JsonProperty("latestToliveTime")
        @ApiModelProperty("可住结束时间")
        private String latestToliveTime;

        @JsonProperty("xStayPeopleNum")
        @ApiModelProperty("可入住人数")
        private String stayPeopleNum;

        @JsonProperty("xStaySex")
        @ApiModelProperty("可入住性别")
        private String staySex;

        @JsonProperty("xBedType")
        @ApiModelProperty("床型")
        private String bedType;

        @JsonProperty("xFloor")
        @ApiModelProperty("楼层")
        private String floor;

        @JsonProperty("xOrientation")
        @ApiModelProperty("朝向")
        private String orientation;

        @JsonProperty("xUserDefined")
        @ApiModelProperty("自定义说明")
        private String userDefined;

        @JsonProperty("HotelLevel")
        @ApiModelProperty("酒店等级")
        private String hotelLevel;

        @JsonProperty("majia_id")
        @ApiModelProperty("产品唯一标识")
        private String majiaId;

        @JsonProperty("Littlemajiaid")
        @ApiModelProperty("产品唯一标识（API成单使用）")
        private String littleMajiaId;

        @JsonProperty("GoodsUniqId")
        @ApiModelProperty("商品唯一标识")
        private String goodsUniqId;

        @JsonProperty("DayPromotions")
        @ApiModelProperty("每日促销明细集合")
        private List<PromotionFlag> dayPromotions;

        @JsonProperty("PromotionFlags")
        @ApiModelProperty("促销活动集合")
        private List<PromotionFlag> promotionFlags;

        @JsonProperty("IsPromotion")
        @ApiModelProperty("是否促销")
        private Boolean isPromotion;

        @JsonProperty("NeedMajiaId")
        @ApiModelProperty("是需要回传马甲")
        private Boolean needMajiaId;

        @JsonProperty("UsedPromotionValues")
        @ApiModelProperty("使用的同程促销类型")
        private List<UsedPromotionValue> usedPromotionValues;

        @JsonProperty("InternetFilter")
        @ApiModelProperty("网络标准化")
        private Integer IntegerernetFilter;

        @JsonProperty("BoardFilter")
        @ApiModelProperty("早餐标准化")
        private Integer boardFilter;

        @JsonProperty("PrepayResult")
        @ApiModelProperty("预付结果节点")
        private PrepayResult prepayResult;

        @JsonProperty("GuaranteeResult")
        @ApiModelProperty("现付结果节点")
        private GuaranteeResult guaranteeResult;

        @JsonProperty("RoomSquareMetres")
        @ApiModelProperty("房间面积")
        private String roomSquareMetres;

        @JsonProperty("TaxAndServiceFee")
        @ApiModelProperty("税和服务费原币种")
        private BigDecimal taxAndServiceFee;

        @JsonProperty("TaxAndServiceFeeRMB")
        @ApiModelProperty("税和服务费人民币币种")
        private BigDecimal taxAndServiceFeeRMB;

        @JsonProperty("BedDescription")
        @ApiModelProperty("床型描述")
        private String bedDescription;

        @JsonProperty("BedTypeAssociationalFilter")
        @ApiModelProperty("床型标准化描述")
        private String bedTypeAssociationalFilter;

        @JsonProperty("HasWindow")
        @ApiModelProperty("是否有窗")
        private Boolean hasWindow;

        @JsonProperty("SmokingDesc")
        @ApiModelProperty("吸烟偏好描述")
        private String smokingDesc;

        @JsonProperty("Board")
        @ApiModelProperty("膳食")
        private Board board;

        @JsonProperty("RoomChildAge")
        @ApiModelProperty("房间可住儿童年龄")
        private Integer roomChildAge;

        @JsonProperty("RoomMaxPax")
        @ApiModelProperty("房间最大入住人数")
        private Integer roomMaxPax;

        @JsonProperty("AdultOccupancyPerRoom")
        @ApiModelProperty("房间最大可住成人数")
        private Integer adultOccupancyPerRoom;

        @JsonProperty("ChildrenOccupancyPerRoom")
        @ApiModelProperty("房间最大可住儿童数")
        private Integer childrenOccupancyPerRoom;

        @JsonProperty("CheckInInstructions")
        @ApiModelProperty("入住需知")
        private String checkInInstructions;

        @JsonProperty("ExtraPersonFee")
        @ApiModelProperty("额外人员费用(附加费)")
        private BigDecimal extraPersonFee;

        @JsonProperty("ExtraPersonFeeRMB")
        @ApiModelProperty("额外人员费用(附加费人民币)")
        private BigDecimal extraPersonFeeRMB;

        @JsonProperty("BedGroups")
        @ApiModelProperty("床型信息")
        private List<InterBedGroup> bedGroups;

        @JsonProperty("InternetDesc")
        @ApiModelProperty("网络描述")
        private String IntegerernetDesc;

        @JsonProperty("SupplierId")
        @ApiModelProperty("供应商id")
        private String supplierId;

        @JsonProperty("SubSupplierId")
        @ApiModelProperty("二级供应商id")
        private String subSupplierId;

        @JsonProperty("ShopperProductId")
        @ApiModelProperty("商品库shopperid")
        private String shopperProductId;

        @JsonProperty("AdditionalTax")
        @ApiModelProperty("另付税和服务费")
        private AdditionalTax additionalTax;
    }

    @Data
    public static class NightlyRate implements Serializable {
        @JsonProperty("Date")
        @ApiModelProperty("当天日期")
        private Date date;

        @JsonProperty("Member")
        @ApiModelProperty("会员价")
        private BigDecimal member;

        @JsonProperty("Cost")
        @ApiModelProperty("结算价")
        private BigDecimal cost;

        @JsonProperty("Status")
        @ApiModelProperty("库存状态")
        private Boolean status;

        @JsonProperty("AddBed")
        @ApiModelProperty("加床价")
        private BigDecimal addBed;

        @JsonProperty("Basis")
        @ApiModelProperty("原始价格")
        private BigDecimal basis;

        @JsonProperty("BreakfastCount")
        @ApiModelProperty("早餐数量")
        private Integer breakfastCount;

        @JsonProperty("coupon")
        @ApiModelProperty("同程促销金额")
        private BigDecimal coupon;

        @JsonProperty("Rate")
        @ApiModelProperty("每晚每间房价（含税费）")
        private BigDecimal rate;

        @JsonProperty("MinRate")
        @ApiModelProperty("最小价（不含税费）")
        private BigDecimal minRate;
    }

    @Data
    public static class UsedPromotionValue implements Serializable {
        @JsonProperty("PromotionTypeId")
        @ApiModelProperty("促销类型id")
        private Integer promotionTypeId;

        @JsonProperty("PromotionValue")
        @ApiModelProperty("优惠金额")
        private BigDecimal promotionValue;
    }

    @Data
    public static class Detail implements Serializable {
        @JsonProperty("HotelName")
        @ApiModelProperty(value = "酒店名称")
        private String hotelName;

        @JsonProperty("StarRate")
        @ApiModelProperty(value = "挂牌星级")
        private Integer starRate;

        @JsonProperty("Category")
        @ApiModelProperty(value = "艺龙推荐级别")
        private Integer category;

        @JsonProperty("Latitude")
        @ApiModelProperty("纬度")
        private String latitude;

        @JsonProperty("Longitude")
        @ApiModelProperty("经度")
        private String longitude;

        @JsonProperty("Address")
        @ApiModelProperty("地址")
        private String address;

        @JsonProperty("Phone")
        @ApiModelProperty("前台电话")
        private String phone;

        @JsonProperty("ThumbNailUrl")
        @ApiModelProperty("封面图片")
        private String thumbnailUrl;

        @JsonProperty("City")
        @ApiModelProperty("城市ID")
        private String city;

        @JsonProperty("CityName")
        @ApiModelProperty("城市名称")
        private String cityName;

        @JsonProperty("District")
        @ApiModelProperty("行政区ID")
        private String district;

        @JsonProperty("DistrictName")
        @ApiModelProperty("行政区名称")
        private String districtName;

        @JsonProperty("BusinessZone")
        @ApiModelProperty("商业区ID")
        private String businessZone;

        @JsonProperty("BusinessZoneName")
        @ApiModelProperty("商业区名称")
        private String businessZoneName;

        @JsonProperty("Review")
        @ApiModelProperty("评价")
        private Review review;

        @JsonProperty("Features")
        @ApiModelProperty("特色介绍")
        private String features;

        @JsonProperty("GeneralAmenities")
        @ApiModelProperty("设施服务")
        private String generalAmenities;

        @JsonProperty("Traffic")
        @ApiModelProperty("交通状况")
        private String traffic;

        @JsonProperty("Description")
        @ApiModelProperty("酒店描述")
        private String description;

        @JsonProperty("HotelNameEn")
        @ApiModelProperty("酒店英文名")
        private String hotelNameEn;

        @JsonProperty("AddressEn")
        @ApiModelProperty("英文地址")
        private String addressEn;

        @JsonProperty("CheckInTime")
        @ApiModelProperty("到店时间")
        private String checkInTime;

        @JsonProperty("CheckOutTime")
        @ApiModelProperty("离店时间")
        private String checkOutTime;

        @JsonProperty("HotelCountryName")
        @ApiModelProperty("国家名称")
        private String hotelCountryName;

        @JsonProperty("HotelCountryCode")
        @ApiModelProperty("国家编码")
        private String hotelCountryCode;

        @JsonProperty("HotelCountryId")
        @ApiModelProperty(value = "国家id")
        private Integer hotelCountryId;

        @JsonProperty("HotelPolicy")
        @ApiModelProperty("酒店政策")
        private String hotelPolicy;
    }

    @Data
    public static class Review implements Serializable {
        @JsonProperty("Good")
        @ApiModelProperty(value = "好评数")
        private Integer good;

        @JsonProperty("Poor")
        @ApiModelProperty(value = "差评数")
        private Integer poor;

        @JsonProperty("Count")
        @ApiModelProperty(value = "评论总数")
        private Integer count;

        @JsonProperty("Score")
        @ApiModelProperty(value = "好评率")
        private String score;
    }

    @Data
    public static class Image implements Serializable {
        @JsonProperty("Type")
        @ApiModelProperty(value = "图片类型")
        private Integer type;

        @JsonProperty("IsCoverImage")
        @ApiModelProperty(value = "是否是酒店封面")
        private String isCoverImage;

        @JsonProperty("IsRoomCoverImage")
        @ApiModelProperty(value = "是否为房型封面")
        private String isRoomCoverImage;

        @JsonProperty("RoomId")
        @ApiModelProperty(value = "房型编号")
        private String roomId;

        @JsonProperty("Locations")
        @ApiModelProperty(value = "图片地址")
        private List<Location> locations;
    }

    @Data
    public static class Location implements Serializable {
        @JsonProperty("SizeType")
        @ApiModelProperty(value = "图片规格")
        private Integer sizeType;

        @JsonProperty("WaterMark")
        @ApiModelProperty(value = "是否有水印")
        private Boolean waterMark;

        @JsonProperty("Url")
        @ApiModelProperty(value = "图片地址")
        private String url;
    }

    @Data
    public static class GiftPackage implements Serializable {
        @JsonProperty("PkgProductId")
        @ApiModelProperty(value = "礼包套餐ID")
        private Long pkgProductId;

        @JsonProperty("PkgType")
        @ApiModelProperty(value = "礼包套餐类型")
        private Integer pkgType;

        @JsonProperty("PkgProductName")
        @ApiModelProperty(value = "礼包套餐名字")
        private String pkgProductName;

        @JsonProperty("RuleDescriptionAdditional")
        @ApiModelProperty(value = "礼包套餐特别说明")
        private String ruleDescriptionAdditional;

        @JsonProperty("Pictures")
        @ApiModelProperty(value = "礼包套餐图片")
        private List<Picture> pictures;

        @JsonProperty("XProducts")
        @ApiModelProperty(value = "X产品列表")
        private List<XProduct> xProducts;
    }

    @Data
    public static class XProduct implements Serializable {
        @JsonProperty("XProductId")
        @ApiModelProperty(value = "X产品ID")
        private Long xProductId;

        @JsonProperty("XProductName")
        @ApiModelProperty(value = "X产品名字")
        private String xProductName;

        @JsonProperty("TypeName")
        @ApiModelProperty(value = "X产品类型")
        private String typeName;

        @JsonProperty("Quantity")
        @ApiModelProperty(value = "X产品数量")
        private String quantity;

        @JsonProperty("ReceptionTimes")
        @ApiModelProperty(value = "X产品接待时间")
        private String receptionTimes;

        @JsonProperty("Capacity")
        @ApiModelProperty(value = "X产品适用人数")
        private String capacity;

        @JsonProperty("BookingPhone")
        @ApiModelProperty(value = "X产品预订电话")
        private String bookingPhone;

        @JsonProperty("AppoIntegerPolicy")
        @ApiModelProperty(value = "X产品预订规则")
        private String appoIntegerPolicy;
    }

    @Data
    public static class Picture implements Serializable {
        @JsonProperty("ImgIndex")
        @ApiModelProperty(value = "礼包套餐图片顺序")
        private Integer imgIndex;

        @JsonProperty("ImgUrl")
        @ApiModelProperty(value = "礼包套餐图片链接")
        private String imgUrl;
    }

    @Data
    public static class Gift implements Serializable {
        @JsonProperty("GiftId")
        @ApiModelProperty(value = "关联RatePlan.GiftId")
        private Long giftId;

        @JsonProperty("GiftDescription")
        @ApiModelProperty(value = "礼包副标题")
        private String giftDescription;

        @JsonProperty("Description")
        @ApiModelProperty(value = "关于礼品的描述")
        private String description;

        @JsonProperty("RelatedProducts")
        @ApiModelProperty(value = "关联的产品列表")
        private List<RelatedProducts> relatedProducts;

        @JsonProperty("StartDate")
        @ApiModelProperty(value = "礼品有效开始时间")
        private Date startDate;

        @JsonProperty("EndDate")
        @ApiModelProperty(value = "礼品有效结束时间")
        private Date endDate;

        @JsonProperty("DateType")
        @ApiModelProperty(value = "日期类型")
        private String dateType;

        @JsonProperty("WeekSet")
        @ApiModelProperty(value = "星期设置")
        private String weekSet;

        @JsonProperty("GiftContent")
        @ApiModelProperty(value = "活动内容")
        private String giftContent;

        @JsonProperty("GiftTypes")
        @ApiModelProperty(value = "送礼类型")
        private String giftTypes;

        @JsonProperty("GiftInfos")
        @ApiModelProperty(value = "新的送礼类型")
        private List<GiftInfo> giftInfos;

        @JsonProperty("HourNumber")
        @ApiModelProperty(value = "小时数")
        private Integer hourNumber;

        @JsonProperty("HourType")
        @ApiModelProperty(value = "小时数的类型")
        private String hourType;

        @JsonProperty("WayOfGiving")
        @ApiModelProperty(value = "送礼方式")
        private String wayOfGiving;

        @JsonProperty("WayOfGivingOther")
        @ApiModelProperty(value = "其他的送礼具体方式")
        private String wayOfGivingOther;

        @JsonProperty("GiftValue")
        @ApiModelProperty(value = "礼包价值")
        private BigDecimal giftValue;
    }

    @Data
    public static class RelatedProducts implements Serializable {

        @JsonProperty("RoomTypeIds")
        @ApiModelProperty(value = "以逗号分隔的供应商房型id列表")
        private String roomTypeIds;

        @JsonProperty("RatePlanId")
        @ApiModelProperty(value = "价格计划ID")
        private Integer ratePlanId;
    }

    @Data
    public static class EffectiveDates implements Serializable {

        @JsonProperty("StartDate")
        @ApiModelProperty(value = "礼品有效开始时间")
        private Date startDate;

        @JsonProperty("EndDate")
        @ApiModelProperty(value = "礼品有效结束时间")
        private Date endDate;
    }

    @Data
    public static class HAvailPolicy implements Serializable {

        @JsonProperty("Id")
        @ApiModelProperty(value = "提示编号")
        private String id;

        @JsonProperty("AvailPolicyText")
        @ApiModelProperty(value = "提示内容")
        private String availPolicyText;

        @JsonProperty("AvailPolicyStart")
        @ApiModelProperty(value = "有效开始时间")
        private Date availPolicyStart;

        @JsonProperty("AvailPolicyEnd")
        @ApiModelProperty(value = "有效结束时间")
        private Date availPolicyEnd;
    }

    @Data
    public static class GiftInfo implements Serializable {

        @JsonProperty("GiftInfo")
        @ApiModelProperty(value = "礼包一级编号")
        private Long giftInfo;

        @JsonProperty("GiftSubInfos")
        @ApiModelProperty(value = "二级礼包内容")
        private List<GiftSubInfo> giftSubInfos;
    }

    @Data
    public static class GiftSubInfo implements Serializable {

        @JsonProperty("SubInfo")
        @ApiModelProperty("礼包二级编号")
        private Integer subInfo;
    }

    @Data
    public static class ExchangeRate implements Serializable {

        @JsonProperty("CurrencyCode")
        @ApiModelProperty("货币编码")
        private String currencyCode;

        @JsonProperty("Rate")
        @ApiModelProperty("汇率值")
        private BigDecimal rate;
    }

    @Data
    public static class DayPromotion implements Serializable {

        @JsonProperty("Date")
        @ApiModelProperty("日期")
        private Date date;

        @JsonProperty("Promotions")
        @ApiModelProperty("每日促销明细")
        private List<Promotion> promotions;
    }

    @Data
    public static class Promotion implements Serializable {

        @JsonProperty("PromotionType")
        @ApiModelProperty("促销类型")
        private Integer promotionType;

        @JsonProperty("PriceDiscountValue")
        @ApiModelProperty("卖价优惠金额")
        private BigDecimal priceDiscountValue;

        @JsonProperty("PromotionId")
        @ApiModelProperty("促销活动Id")
        private Long promotionId;
    }

    @Data
    public static class PromotionFlag implements Serializable {

        @JsonProperty("PromotionId")
        @ApiModelProperty("促销活动Id")
        private Long promotionId;

        @JsonProperty("PromotionTag")
        @ApiModelProperty("促销活动标签")
        private String promotionTag;
    }

    @Data
    public static class Board implements Serializable {

        @JsonProperty("BreakfastIncluded")
        @ApiModelProperty("是否含早")
        private Boolean breakfastIncluded;

        @JsonProperty("HalfboardIncluded")
        @ApiModelProperty("是否半膳")
        private Boolean halfboardIncluded;

        @JsonProperty("FullboardIncluded")
        @ApiModelProperty("是否全膳")
        private Boolean fullboardIncluded;

        @JsonProperty("Boards")
        @ApiModelProperty("膳食明细")
        private BoardDetail boards;
    }

    @Data
    public static class BoardDetail implements Serializable {

        @JsonProperty("Description")
        @ApiModelProperty("描述")
        private String description;

        @JsonProperty("Count")
        @ApiModelProperty("膳食数量")
        private Integer count;

        @JsonProperty("type")
        @ApiModelProperty("膳食类型")
        private Integer type;

        @JsonProperty("BoardDesc")
        @ApiModelProperty("膳食描述")
        private String boardDesc;
    }

    @Data
    public static class InterBedGroup implements Serializable {
        private static final long serialVersionUID = 1L;

        @JsonProperty("BedGroupId")
        @ApiModelProperty("床型信息id")
        private String bedGroupId;

        @JsonProperty("BedGroupDesc")
        @ApiModelProperty("床型信息描述")
        private String bedGroupDesc;

        @JsonProperty("BedTypes")
        @ApiModelProperty("床类型")
        private List<BedType> bedTypes;
    }

    @Data
    public static class BedType implements Serializable {

        @JsonProperty("BedTypeId")
        @ApiModelProperty("床类型id")
        private String bedTypeId;

        @JsonProperty("BedTypeName")
        @ApiModelProperty("床类型名称")
        private String bedTypeName;

        @JsonProperty("BedType")
        @ApiModelProperty("床类型")
        private List<String> bedType;

        @JsonProperty("Count")
        @ApiModelProperty("床数")
        private Integer count;

        @JsonProperty("Size")
        @ApiModelProperty("床大小")
        private String size;
    }

    @Data
    public static class PrepayResult implements Serializable {

        @JsonProperty("CancelDescription")
        @ApiModelProperty("取消规则")
        private String cancelDescription;

        @JsonProperty("CancelType")
        @ApiModelProperty("取消类型")
        private Integer cancelType;

        @JsonProperty("LadderVouch")
        @ApiModelProperty("是否使用阶梯担保规则")
        private Boolean ladderVouch;

        @JsonProperty("LadderParseList")
        @ApiModelProperty("取消规则明细")
        private List<LadderParse> ladderParseList;

        @JsonProperty("CancelTag")
        @ApiModelProperty("取消规则标签")
        private String cancelTag;
    }

    @Data
    public static class LadderParse implements Serializable {

        @JsonProperty("BeginTime")
        @ApiModelProperty("开始时间")
        private Long beginTime;

        @JsonProperty("EndTime")
        @ApiModelProperty("结束时间")
        private Long endTime;

        @JsonProperty("CutType")
        @ApiModelProperty("扣费类型")
        private Integer cutType;

        @JsonProperty("CutValue")
        @ApiModelProperty("扣费值")
        private BigDecimal cutValue;

        @JsonProperty("Amount")
        @ApiModelProperty("扣费值")
        private BigDecimal amount;

        @JsonProperty("ShortDesc")
        @ApiModelProperty("短文案")
        private String shortDesc;

        @JsonProperty("AmountRmb")
        @ApiModelProperty("扣费值")
        private BigDecimal amountRmb;

        @JsonProperty("ExchangeRate")
        @ApiModelProperty("汇率")
        private BigDecimal exchangeRate;
    }

    @Data
    public static class GuaranteeResult implements Serializable {

        @JsonProperty("MoneyArrivalTime")
        @ApiModelProperty("到店时间触发时的担保金额")
        private BigDecimal moneyArrivalTime;

        @JsonProperty("ArrivalTime")
        @ApiModelProperty("需要担保的到店时间(格式：hh:mm)")
        private String arrivalTime;

        @JsonProperty("RoomCount")
        @ApiModelProperty("房量担保分割点")
        private Integer roomCount;

        @JsonProperty("GuaranteeType")
        @ApiModelProperty("担保类型")
        private Integer guaranteeType;

        @JsonProperty("GuaranteeMoney")
        @ApiModelProperty("当前条件下需要担保的金额")
        private BigDecimal guaranteeMoney;

        @JsonProperty("NeedGuarantee")
        @ApiModelProperty("当前条件下是否需要担保")
        private Boolean needGuarantee;

        @JsonProperty("CancelTime")
        @ApiModelProperty("可以取消的时间点，单位秒")
        private Long cancelTime;

        @JsonProperty("CancelDescription")
        @ApiModelProperty("取消规则详细描述")
        private String cancelDescription;

        @JsonProperty("CancelTag")
        @ApiModelProperty("取消规则标签")
        private String cancelTag;

        @JsonProperty("CancelType")
        @ApiModelProperty("取消类型")
        private Integer cancelType;

        @JsonProperty("LadderParseList")
        @ApiModelProperty("取消规则明细")
        private List<LadderParse> ladderParseList;
    }

    @Data
    public static class Meals implements Serializable {

        @JsonProperty("hasMealTable")
        @ApiModelProperty("是否存在餐食表格")
        private Boolean hasMealTable;

        @JsonProperty("mealCopyWriting")
        @ApiModelProperty("餐食文案描述")
        private String mealCopyWriting;

        @JsonProperty("dayMealTable")
        @ApiModelProperty("每日餐食表格")
        private List<DayMeal> dayMealTable;
    }

    @Data
    public static class DayMeal implements Serializable {

        @JsonProperty("date")
        @ApiModelProperty("餐食的日期")
        @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
        private Date date;

        @JsonProperty("useDynamicMeal")
        @ApiModelProperty("是否使用动态餐食")
        private Boolean useDynamicMeal;

        @JsonProperty("dynamicMealDesc")
        @ApiModelProperty("动态餐食描述")
        private String dynamicMealDesc;

        @JsonProperty("breakfastShare")
        @ApiModelProperty("早餐数量")
        private Integer breakfastShare;

        @JsonProperty("breakfastDesc")
        @ApiModelProperty("早餐描述")
        private String breakfastDesc;

        @JsonProperty("lunchShare")
        @ApiModelProperty("午餐数量")
        private Integer lunchShare;

        @JsonProperty("lunchDesc")
        @ApiModelProperty("午餐描述")
        private String lunchDesc;

        @JsonProperty("dinnerShare")
        @ApiModelProperty("晚餐数量")
        private Integer dinnerShare;

        @JsonProperty("dinnerDesc")
        @ApiModelProperty("晚餐描述")
        private String dinnerDesc;

        @JsonProperty("dayMealCopyWriting")
        @ApiModelProperty("到天餐食描述")
        private String dayMealCopyWriting;
    }

    @Data
    public static class AdditionalTax implements Serializable {

        @JsonProperty("TotalAmountRmb")
        @ApiModelProperty("另付税和服务费总额")
        private BigDecimal totalAmountRmb;

        @JsonProperty("AdditionalTaxItems")
        @ApiModelProperty("另付税和服务费明细")
        private List<AdditionalTaxItem> additionalTaxItems;
    }

    @Data
    public static class AdditionalTaxItem implements Serializable {

        @JsonProperty("Description")
        @ApiModelProperty("另付税和服务费明细描述")
        private String description;

        @JsonProperty("Amount")
        @ApiModelProperty("另付税和服务费明细金额")
        private BigDecimal amount;
    }
}